Systems and methods of data  analytics

ABSTRACT

Systems and methods of data analytics, which in various embodiments enable business analysts to apply certain machine learning and analytics algorithms in a self-service manner by binding them to generic business questions that they can be used to answer in particular domains. The general approach may be to define the application of an algorithm to solve specific problems (questions) for particular combinations of a business domain and a data category. At design time, the algorithm may be linked to canonical data within a data category and programmed to run with this canonical data set. At runtime, given a dataset and its category, and a business domain, a user may choose from the corresponding questions and the system may run the algorithm bound to that question.

TECHNICAL FIELD

The subject matter of this disclosure relates to data analytics. Moreparticularly, the subject matter of this disclosure relates to systemsand methods including applications and questions to facilitate the useof data analytics algorithms.

BACKGROUND

The problem of selecting an appropriate method (algorithm) for analyzingdata in a business setting is one that requires different areas ofknowledge that are often not possessed by a single individual. On onehand, data analysis and machine learning algorithms are complex, andknowing when and how to apply them depends on multiple factors,including the problem being solved, the characteristics of the data, theconfiguration parameters required, etc. The knowledge required forknowing which algorithm to apply for a given problem and how to do so ismost often possessed by an experienced statistician or data scientist.On the other hand, the data that needs to be analyzed and input to thesealgorithms is best understood and interpreted by someone connected tothe business and the business rules that govern the generation,collection, and relationships in the data. Additionally, this businessanalyst is the one most knowledgeable of the business problems andapplications that would benefit from the analytics tools known by thedata scientist.

For all but the simplest of tasks, therefore, data analytics iscurrently a complex, domain and application dependent, and interactiveendeavor, where data and business analysts must complement each otherand their skills. However, the cloud (as a service) model disrupts thiscurrent practice by providing easy access to data, storage, computation,and algorithms in unified platforms for self-service. Thus, there is aneed to enable this self-service model as much as possible so that abusiness analyst can use a cloud analytics platform, or other dataanalytics, on demand, reducing the need for intervention from a datascientist. This is not the case with current analytics and machinelearning libraries, toolkits, and applications that provide a wide rangeof configurable analytics algorithms, but little or no hints about thebusiness problems they solve and when they are applicable.

SUMMARY

An embodiment is a method of performing data analytics. The method isperformed on a data analytics system comprising a non-transitorycomputer-readable storage medium and a processor attached thereto. Theanalytics system stores, in the computer-readable storage, one or moreapplications, each application being associated with an algorithm, eachapplication being further associated with canonical data indicative of aclass of data to be accepted by the algorithm associated with theapplication. The analytics system stores, in the computer-readablestorage, one or more questions, each question being associated with anapplication. The analytics system stores a user dataset associated witha domain and a data category. The analytics system selects a questionfrom the one or more questions. The selected question is selected basedat least in part on the domain and the data category of the userdataset. The analytics system matches the user dataset based on thecanonical data of the application associated with the selected question.The matching is performed by the processor. The matching comprisescomparing one or more fields of the user dataset with the class of dataindicated by the canonical data. The matching thereby produces acanonicalized dataset. The analytics system executes the algorithmassociated with the application. The canonicalized dataset is providedas input to the algorithm. The analytics system presents output from thealgorithm to the user.

Optionally in any of the aforementioned embodiments, each questionfurther comprises a domain and a user category. Selecting the questionfrom the one or more questions comprises identifying a subset ofmatching questions having the same domain and user category as thedomain and the user category of the user dataset.

Optionally in any of the aforementioned embodiments, the one or morequestions include a basic question. Selecting the question from the oneor more questions further comprises selecting the basic question upon adetermination that no question matches the domain and user category ofthe user dataset.

Optionally in any of the aforementioned embodiments, the basic questionincludes a question text containing an interpolation flag. Selecting thebasic question comprises interpolating user-provided text with thequestion text of the basic question to produce interpolated questiontext, and presenting the interpolated question text to a user.

Optionally in any of the aforementioned embodiments, the canonical dataidentifies one or more data field descriptors. Matching the user datasetbased on the canonical data comprises selecting fields from the userdataset based at least in part on the one or more data field descriptorsof the canonical data.

Optionally in any of the aforementioned embodiments, each applicationfurther comprises data indicative of a mapping to the algorithm of theapplication. Executing the algorithm associated with the applicationcomprises mapping the canonicalized data to the input to the algorithmbased on the data indicative of the mapping.

Optionally in any of the aforementioned embodiments, the user dataset isreceived from an external computer system via a network interface of theanalytics system.

Optionally in any of the aforementioned embodiments, the method alsoincludes additional elements. The analytics system identifies a subsetof matching questions from the one or more questions based at least inpart on the domain and data category of the user dataset. The analyticssystem transmits, to the external computer system, a user interfaceidentifying the subset of matching questions. The analytics systemreceives a user form response from the external computer system via thetransmitted user interface. Selecting the question from the one or morequestions is based at least in part on the user form response.

Optionally in any of the aforementioned embodiments, the canonical datafor each application is determined based on an abstraction operationperformed by the analytics system. The analytics system identifies anexample dataset associated with the application. The analytics systemdetermines one or more field descriptors based on the example dataset.

Optionally in any of the aforementioned embodiments, determining the oneor more field descriptors is based at least in part on a selection offields by an operator of the analytics system.

Optionally in any of the aforementioned embodiments, each fielddescriptor identifies a data type and one or more characteristics of adata field.

Optionally in any of the aforementioned embodiments, the one or morefield descriptors are determined based at least in part on inputsassociated with the algorithm of the application.

Optionally in any of the aforementioned embodiments, the example datasetis uploaded to the analytics system by an operator of the analyticssystem.

Optionally in any of the aforementioned embodiments, matching the userdataset based on the canonical data comprises identifying an ambiguityin matching at least one descriptor of the canonical data, andrequesting manual interaction to resolve the ambiguity.

Optionally in any of the aforementioned embodiments, the ambiguityinvolves a descriptor of the canonical data not matching any field ofthe user dataset or matching multiple fields of the user dataset.

An embodiment is a computer system. The system includes an applicationstore comprising computer-readable storage, having stored therein one ormore applications, each application being associated with an algorithm,each application being further associated with canonical data indicativeof a class of data to be accepted by the algorithm associated with theapplication. The system includes a question store comprisingcomputer-readable storage, having stored therein one or more questions,each question being associated with an application. The system includesa user dataset store comprising computer-readable storage, having storedtherein a user dataset associated with a domain and a data category. Thesystem includes a question selection module configured to select aquestion from the one or more questions. The selected question isselected based at least in part on the domain and the data category ofthe user dataset. The system includes a dataset matching moduleconfigured to match the user dataset based on the canonical data of theapplication associated with the selected question. The matching isperformed by the processor. The matching comprises comparing one or morefields of the user dataset with the class of data indicated by thecanonical data. The matching thereby produces a canonicalized dataset.The system includes an application execution module configured toexecute the algorithm associated with the application. The canonicalizeddataset is provided as input to the algorithm.

An embodiment is a method of performing data analytics. The method isperformed using a computer processor. The computer processor receives auser dataset. The computer processor selects a question that may beanswered with respect to the user dataset from a plurality of questions.The selection is based on stored attributes of the plurality ofquestions and further being based on attributes of the user dataset. Thecomputer processor reconfigures the user dataset to conform with one ormore inputs associated with an algorithm. The algorithm is identified bythe computer processor as being configured to respond to the selectedquestion. The computer processor executes the algorithm based on thereconfigured user dataset.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of data structures that represent certainconcepts described herein, in an embodiment.

FIG. 2 is a UML-like alternate representation of the data structureconcepts, as used in an embodiment.

FIG. 3 is a flowchart of a process of setting up and operating a dataanalytics system, as used in an embodiment.

FIG. 4 is a flowchart of a process of constructing an application, asused in an embodiment.

FIG. 5 is a sample dataset that may be used as an example dataset in theprocess of constructing an application.

FIG. 6 is a flowchart of a process of formulating questions, as used inan embodiment.

FIG. 7 is a matrix of several examples of questions that may beformulated in an embodiment.

FIG. 8 is a flowchart of a process of executing applications, as used inan embodiment.

FIG. 9 is a sample user interface that may be displayed during theexecution of applications, as used in an embodiment.

FIG. 10 is a block diagram of an analytics system, as used in anembodiment.

FIG. 11 illustrates a computer system that is consistent withembodiments of the present teachings.

DESCRIPTION OF THE EMBODIMENTS

For simplicity and illustrative purposes, the principles of the presentteachings are described by referring mainly to exemplary embodimentsthereof. However, one of ordinary skill in the art would readilyrecognize that the same principles are equally applicable to, and can beimplemented in all types of systems, and that any such variations may beincluded in various embodiments. Moreover, in the following detaileddescription, references are made to the accompanying figures, whichillustrate specific embodiments. Electrical, mechanical, logical andstructural changes can be made to various embodiments. It will beunderstood that the embodiments disclosed may be varied, augmented, oraltered, that elements may be exchanged with their equivalents, and thatelements may be implemented in many different ways.

Disclosed in various embodiments are systems and methods of dataanalytics, which may enable business analysts to apply certain machinelearning and analytics algorithms in a self-service manner by bindingthem to generic business questions that they can be used to answer inparticular domains. The general approach may be to define theapplication of an algorithm to solve specific problems (questions) forparticular combinations of a business domain and a data category. Atdesign time, the algorithm may be linked to canonical data within a datacategory and programmed to run with this canonical data set. At runtime,given a dataset and its category, and a business domain, a user maychoose from the corresponding questions and the system may run thealgorithm bound to that question. Consequently, the user may not need toknow the algorithm or how to apply it. Manual steps to adapt the realdata set to the algorithm may advantageously be minimized or eveneliminated due to use of the domain and data category as well as thelikelihood for fitting the given data to the form of the canonical dataset.

Generally, various embodiments provide a structure for connecting dataanalytics algorithms, which apply computational and mathematicalprocesses to transform data, with business-oriented questions and/orother higher-level questions. Non-limiting examples of analyticsalgorithms include statistical regression, Bayesian analysis, neuralnetworks, decision trees, and the like. Business-oriented questions mayinclude consumer sentiments about a product or service, types ofadvertisements for targeting toward customers, health care treatmentrecommendations, and so on.

Some embodiments generally incorporate a two-phase structure forimplementing the aforementioned connection of algorithms to businessquestions. In a first phase, called the “offline phase,” algorithms anddata structures are associated into “applications,” and one or more“questions” are associated with those applications, the questions beingformulated to address business concerns or other appropriate interestsas desired by the operator of the offline phase. The applications andquestions are rendered to computer-readable storage. In the secondphase, called the “online phase,” users upload data sets of interest. Acomputer system may analyze the uploaded data sets and identifyappropriate questions and/or applications that may be applied to theprovided data, and the system may then perform the desired analyses forthe users.

These and other concepts, as used in certain embodiments, are describedin greater detail with reference to the Figures.

FIG. 1 is a block diagram of data structures that represent certainconcepts described above, in an embodiment. The data structures may bestored on computer-readable media such as a hard drive, SSD, tapebackup, distributed storage, cloud storage, and so on, and may bestructured as relational database tables, flat files, C structures,programming language objects, database objects, and the like. Elementsof the data structures may be arranged differently in variousembodiments, elements may be added and/or removed, and related elementsmay be associated through references, pointers, links, substructures,foreign keys, and so on.

In the embodiment of FIG. 1, application 101 represents a use of aparticular analytics technique applied to a type or class of data.Application 101 may include one or more algorithms 102. An algorithm maybe any computational, mathematical or other procedure that takes adataset as input, possibly along with other inputs, and generates one ormore outputs based on the input data. For example, a linear regressionalgorithm may receive as input independent and/or dependent variabledata, and produce as output one or more coefficients of correlation. Itis often, though not necessarily, the case that algorithms are neutralto the semantics of the data. A linear regression algorithm, forexample, may operate on sales data, consumer data, public data, medicaldata, and so on. In addition to linear regression, examples ofalgorithms may include text classification, Bayesian analysis, sentimentanalysis, support vector machines, neural networks, and so on.

Application 101 may further include canonical data 103. Canonical datamay include any representation of a class of data that may be acceptedfor input to algorithms 102. Typically a class of data will berepresented through characteristics of the structure of acceptable data.The canonical data may be used, as explained in greater detail furtherin this specification, to process a user-provided dataset to conform tothe inputs required by the algorithms 102; that is, to “canonicalize”the user dataset.

For example, canonical data 103 may identify a set of fields and datatypes, akin to a database table schema or in-memory data structure.Canonical data may optionally include qualifications, or “descriptors,”on each of the fields, for example restricting an integer-type field topositive integers. Canonical data may optionally include mechanisms ofselecting among multiple candidate fields. For example, an applicationassociated with a text classification algorithm may identify, in itscanonical data, to use the text strings with the longest length for theclassification procedure, so that where a user presents a dataset withmultiple text string fields, only the field with the longest strings areused as input to the text classification algorithm.

Canonical data 103 may include data category 104, which may be a generalor specific identifier of the type of dataset expected by canonical data103. Data category 104 may be used to identify the semantic content ofthe data, so example data categories may include social media data,customer data, and the like. Creators of applications 101 may selectdata categories to correspond with their types of datasets expected tobe submitted by users of those applications. Although the depictedembodiment includes a single data category 104 for each canonical data103, in alternate embodiments multiple data categories may be included.

Application 101 may further include mapping 105, which may specify aconversion between canonical data 103 and the expected inputs foralgorithms 102. The mapping may be represented in various ways, such asa conversion table between input names, an ordering of fields in thecanonical data, a computer script, executable code, and the like. Insome cases, the mapping between the algorithms 102 and the canonicaldata 103 may be determinable from the canonical data 103 alone, in whichcase a separate mapping element 105 may be unnecessary.

Question 106 represents a user-oriented problem that may be answeredthrough use of one or more applications 101. A question 106 may includetext 107 to be presented to the user. The text may indicate the natureof the problem that may be answered. Examples of question texts arepresented in various embodiments below. In some embodiments, thequestion text may be configured to be dynamic or adaptive, throughinclusion of interpolated variables for example. Such configuration maybe used to make questions adaptable to multiple similar situations. Forexample, a question relating to social media sentiments about variouscandidates in an election may include text like “What are people sayingabout candidate [NAME],” where [NAME] can be filled in with a candidateof interest, perhaps as specified by a user.

Question 106 may further include a domain 108, which may identify acategory of data appropriate to the question. The domain may berepresented as a text string and identify, for example, a particularbusiness sector or area appropriate to the question. Examples of suchdomains include retail, business services, healthcare, and the like.Questions 106 may further include a data category 109, corresponding tothe data category element 104 of applications. Accordingly, domains anddata categories may represent a two-dimensional space of businessinterests and data sources, with each question 106 encompassing asegment of that space where useful information may be provided out of agiven data source for a particular business interest. Thistwo-dimensional model is discussed further below in this specification.Although the depicted embodiment includes one data category and domainper question, in various embodiments questions may include multiple datacategories and/or domains, in which case dynamically adaptable texts 107may advantageously enable the question to encompass those multiplecategories and/or domains.

Question 106 may further be associated with an application 110,corresponding to application 101, which may be executed as describedbelow in order to answer the question for users. In various embodiments,a question may be associated with multiple applications, for example toenable chaining or pipelining of applications. Of note, because theapplication identifies data category 104 through its canonical data 103,the additional identification of a data category 109 in question 106 maybe redundant and optionally not present in some embodiments,particularly those where a single data category is included for bothapplications and questions (although the presence of the data categoryin both data structures may improve performance and speed of access).

A key advantage of the aforementioned data structure arrangement is thatit bridges algorithms of different specificities with businessquestions. Various algorithms have different degrees of specialization.For example, there are general purpose algorithms such as SVM andBayesian algorithms for classification, and k-means for clustering.Other algorithms may be more specialized for text data and forparticular applications, such as for example a Sentiment Analysisalgorithm that classifies text according to positive, neutral, ornegative sentiment. Even though general purpose algorithms can be usedto answer arbitrarily many different kinds of business questions, withina particular business domain and for specific categories of data withinthat domain, there may be a set of questions that the algorithms aretypically used to answer and a general way of applying those algorithmsto data within each category, as embodied in applications and questions.

FIG. 2 is a UML-like alternate representation of the data structureconcepts presented in FIG. 1. This representation identifies relationsbetween the various objects through the lines and identifiers betweenblocks such that, for example, a line with two asterisks represents amany-to-many relation and a line with a numeral 1 and an asteriskrepresents a one-to-many relation. In alternate embodiments, differentrelations between objects may be employed, and/or different objects maybe associated with each other.

FIG. 3 is a flowchart of a process of setting up and operating a dataanalytics system, as used in an embodiment. The process may be performedon one or more computer systems as described below. In variousembodiments, additional blocks may be included, some blocks may beremoved, and/or blocks may be connected or arranged differently fromwhat is shown.

The process of FIG. 3 may generally be described as having two phases:an “offline” phase in which applications and questions are built, and an“online” phase in which users provide data for analysis. The offlinephase corresponds to blocks 301 and 302, while the online phaseencompasses blocks 303 through 305. In general a system operator mayperform the offline phase while third-party users would perform theonline phase, though other arrangements are possible in alternateembodiments. The two phases may be performed at different times, and theonline phase may be performed multiple times. Additionally, the offlinephase may be performed subsequent to performance of the online phase,for example to add new applications or update existing ones on ananalytics system.

At block 301, the operator constructs one or more applications. Theapplications may have a structure like application 101 of FIG. 1, and bestored in computer-readable storage of the analytics system. At block302, the operator formulates one or more questions, such as questions106 of FIG. 1, and those questions may be stored in computer-readablestorage. In alternate embodiments, the formulation of questions mayprecede or be interleaved with construction of applications.

At block 303, the system receives a user dataset, possibly from anexternal system such as a user computer. The dataset may be retrievedover a network system such as the Internet and/or be locally accessibleto the system. The system may then identify one or more domains and/ordata categories, automatically and/or through input from the user, andat block 304 the system may then present relevant questions to the userthat may be answered based on the provided dataset. Upon selection ofone or more of the questions, automatically and/or through user choice,the system may then execute one or more applications based on the userdataset.

FIG. 4 is a flowchart of a process of constructing an application, asused in an embodiment. The process may be performed by an analyticssystem, and it may be performed at block 301 of FIG. 3, for example. Invarious embodiments, additional blocks may be included, some blocks maybe removed, and/or blocks may be connected or arranged differently fromwhat is shown.

At block 401, the system obtains canonical data, a data category, and/oran algorithm for constructing the application. The system may obtainthis information through a variety of mechanisms. Most simply, thesystem operator may provide all of the information to the analyticssystem, possibly through an administrative user interface. Alternately,the operator may provide some of the information and/or relatedinformation, and the analytics system may derive the canonical data,data category, and/or algorithm automatically. For example, the operatormay refer the system to an external data processor, such as adistributed hash table system, which the operator may categorize bydomain and/or data category, and the analytics system may use thatexternal data processor as the algorithm.

In an embodiment, the operator may provide an example dataset and allowthe system to determine the canonical data, through a process called“abstraction” at block 402. An example of this process is provided withrespect to FIG. 5. Briefly, abstraction may involve identifying relevantfields in a dataset and appropriate descriptors of those fields, whichmay be combined into the canonical data. Choosing the descriptors hasconsequences, beyond properly generalizing the application, such asperformance (the more sophisticated the matching criteria is, the morecomplex and time-sensitive the matching of the data has to be). Variousapproaches to identifying the descriptors may be employed. At itssimplest, the system may query the operator to identify the descriptorsof the appropriate fields, perhaps through an interactive wizard orother interface. More advanced embodiments may automatically orpartially automatically select fields and/or descriptors of thosefields, based on the nature of the algorithm, the nature of the exampledataset, and/or other information.

Of note is that the terms “canonical data” and “user datasets” are notnecessarily the same as the terms “training data” and “test data” asused in the art of machine learning. The application in this examplehappens to be a machine learning task, and its implementation may acceptboth training (text+labels) and test data (text only), depending on thequestion relating to the business problem.

At block 403, the system maps the canonical data to the algorithm. Forexample, where the canonical data identifies several data fields and thealgorithm receives multiple arguments as inputs, this mapping mayinvolve determining which fields of the canonical data to use for eachargument. Thus, mapping 105 of FIG. 1 may be constructed in someembodiments. At block 404, the application constructed through theprevious processes may then be stored to computer-readable storage forlater execution.

FIG. 5 is a sample dataset that may be used as an example dataset in theprocess of constructing an application. The sample dataset may be usedas input for the processes of abstraction and data mapping,corresponding to blocks 402 and 403 of FIG. 4, for example.

With respect to FIG. 5, construction of an example application isdescribed. In this non-limiting example, a machine learning algorithmfor classification is used to analyze a social media data set for theproblem of sentiment identification. For this example, the data categoryis social media, the application is sentiment analysis and the algorithmis an appropriate classifier (e.g. Naïve Bayes). This example isindependent of a particular domain, though other examples of abstractionmay be domain-specific.

The example dataset corresponds to a hypothetical Twitter feed, whosetweets have been labeled according to their sentiment. For the sentimentanalysis application, only those two fields, namely the tweet text andsentiment label, may be used. In order to abstract the canonical dataset, those fields must be described in a manner that is specific enoughto avoid ambiguity with other fields (text or string is too broad), butgeneral enough to allow for different data sets that will be presentedto the algorithm at runtime (tweet text is too specific).

For this example, during the process of abstraction, the text field isdescribed as the longest text field in the data, and the sentiment labelas a categorical field with three categories. In alternate embodiments,the abstraction process may select different descriptors for thesefields, such as multi-word text, or added specificity such as matchingthe category labels against a set of known sentiment descriptors (e.g.“positive”, “good”, “+”). As explained previously, factors that may berelevant to the selection of descriptors may include generalizability ofthe application and application performance.

Once the canonical data is constructed, it can be mapped to thealgorithm so that the algorithm may run in terms of that canonical data,converted to appropriate parameters of the algorithm. As an advantageousconsequence of the aforementioned processes of abstraction and mapping,users may present datasets with different fields and field ordering (forexample, Facebook data that first has a timestamp, a user, text, liked,etc.), but as long as it has a longest text field and a categoricalfield with three labels, it can be fed to the algorithm by theapplication.

FIG. 6 is a flowchart of a process of formulating questions, as used inan embodiment. The process may be performed by an analytics system, andit may be performed at block 302 of FIG. 3, for example. In variousembodiments, additional blocks may be included, some blocks may beremoved, and/or blocks may be connected or arranged differently fromwhat is shown.

Questions may be formulated by an operator of the analytics system,according to experience with typical, valuable, or otherwise requiredquestions of generalized interest that the given applications aredesigned to answer in particular domains. In one simple example, anapplication applies to a single domain, and a single question may beformulated for it. In the example with respect to FIG. 5, a questionrelating to the political domain may be formulated as: “How do peoplefeel about the presidential campaign?”

The sample question above, in relation to the sample application of FIG.5, may correspond to a domain (politics), a data category (social mediadata), and an example application (sentiment analysis). Theseassociations can be stored (e.g., in a database) and retrieved atruntime, for example in question data structure 106 of FIG. 1. In manycases, an application may be usable with multiple domains for the samedata category, as is the case with the example of FIG. 5, so thatmultiple questions for the same application can be formulated.

At block 601, the analytics system may obtain question data, possiblyincluding an identifier of a domain. The question data may include,among other things, the question text. At block 602, the systemdetermines if there is a relationship between the question beingformulated and one or more other questions. If so, then at block 603 thequestion being formulated is linked and/or reformulated. Linkingquestions in this way may enable extensibility to further domains, asthey may store question templates that can be completed for new domains,and linking may further enable the display of questions forunderspecified queries, as described below. A relationship betweenquestions may be identified based on factors such as identical orsimilar domains, identical or similar data categories, identical orsimilar question texts, use of the same application or similarapplications, and so on.

At block 604, the question is assigned an application. The applicationmay be selected by an operator of the analytics system. In anembodiment, the question may be formulated prior to the existence of theapplication, in which case the question may be stored without anassigned application and assigned an application later. Thisadvantageously enables questions to be formulated before construction ofparticular applications, possibly motivating the creation of thoseapplications.

At block 605, one or more data categories are assigned to the question.The data category may be determined based on the data category of thecanonical data of the application, based on other data of theapplication, based on other data associated with the question, based onuser input, and/or based on other sources. At block 606, the question isstored in computer storage for later use, such as the online phase asdescribed above.

FIG. 7 is a matrix of several examples of questions that may beformulated in an embodiment. The rows of the matrix represent threepossible domains, namely retail, services, and healthcare. The columnsof the matrix represent two possible data categories, namely socialmedia data and customer data. In various embodiments, these domains anddata categories are represented within application and question datastructures, such as structures 101 and 106 of FIG. 1. The domains, datacategories, and questions presented in FIG. 7 are intended to beexemplary and non-limiting.

The questions at the intersections of the domains/categories are thosethat have been formulated and assigned to the correspondingdomain/category combination. As explained previously, it is generallythe case that each application has a single data category, so eachquestion is associated to one application.

FIG. 7 also shows basic questions for each data category, those basicquestions not being associated with a particular domain, and thenumbering of questions may be used as links among questions within eachdata category. In some embodiments, basic questions may be associatedwith only a domain, only a data category, with multiple domains/datacategories, and other such combinations. As can be seen, the linkedquestions may have similar formulations that differ slightly by domain.Thus, as explained previously, linking may be used to assist inproducing text for new questions for other domains as they are beingformulated by the operator. It may also be used for underspecified userqueries during the online phase, such as where a user desiresinformation for a domain not known to the analytics system. As oneexample, the question, “How do people feel about text” is stored for thesocial media data category, so that adding the political domaindescribed earlier may be simplified by simply filling in “text” as “thepresidential campaign.”

FIG. 8 is a flowchart of a process of executing applications, as used inan embodiment. The process corresponds to the “online” phase describedpreviously, and may be performed by an analytics system possiblyinteracting with a user on an external system and communicating via anetwork and/or other mechanism. In various embodiments, additionalblocks may be included, some blocks may be removed, and/or blocks may beconnected or arranged differently from what is shown.

At block 801, a user may upload a user dataset for analysis. The systemmay then capture the domain and/or data category at block 802, through avariety of techniques in various embodiments. For the domain, the usermay have specified it when registering or signing in to the platform,and/or when uploading the dataset. For the data category, the user mayspecify it upon upload, or the platform may employ an automated methodto infer it from the data, possibly based on the characteristics of thedata fields. Thus, the domain and/or data category may be identified byautomatic and/or manual processes.

Given a domain and data category, the system may retrieve the questionsthat were stored for them at block 803. These questions may be presentedto the user via a user interface. Advantageously, the interface may showthe user the options that are available for the analysis of their data,in a way that a non-expert user can easily relate to their businessproblems and/or goals. The more applications that are made available fordifferent domains and data categories there are, the more likely it willbe that a user will find a question/analysis of interest, especially ifthe questions are typical and generally applicable to the domain and ifthe user does not have a previously well-defined idea of the kind ofinsight/information they can obtain from their data. Thus, users mayupload a dataset and automatically discover what sorts of analyticsand/or insights may be gleaned from that dataset, through operation ofthe system.

In an embodiment, the system may accept underspecified queries, wherethe domain and/or data category are not obtained at block 802 orelsewhere. In this case, and depending on the embodiment, a larger setof questions can be presented, such as all questions matching theprovided domain or data category, basic questions for a data category,derived questions based on basic questions or template questions, or thelike. The basic questions, such as those described in FIG. 7, becomeespecially useful in these cases, because they may prevent showing allof the slightly different versions of the same question. So, forexample, if the domain is not specified, the user may see the question“How do people feel about text” or some other generic version of thequestion.

At block 804, the system receives input indicating a selection of thosepresented questions, for which analytics are to be performed. In analternate embodiment, some or all of the questions may be automaticallyselected.

At block 805, the dataset may be matched with the canonical datadescription. The system may choose fields from the data that (best)match the descriptors of the canonical data for the application. Duringthis block, the system may determine that all of the descriptors withinthe canonical data can be matched in the data without ambiguity, or itmay determine that at least one descriptor does not match any field inthe data set, does not match any field sufficiently, and/or matches morethan one field ambiguously. In the former case, the process continues toblock 807, where the application may be applied directly with no manualintervention from the user. The output of the application, which may bebased on the execution of the associated algorithm, may be presented tothe user for viewing or download, and/or it may be used for furtherexecution. In an embodiment, the system first performs a sanity check byaccepting the inferred mapping for the application.

Where there is no unambiguous match between the canonical data and theuser dataset, some guided manual interaction may be required to completethe matching, as performed at block 806. The interaction may be ofvarious forms in various embodiments, including heuristic matching, aguided wizard interface, a request for modification of the dataset,and/or a request for intervention from a data expert. Generally,however, due to the selected domain and data category used to define andparameterize the application, in many cases the user dataset will sharemany characteristics with the canonical data. In some embodiments, moresophisticated matching, such as similarity-based matching, may be usedat block 805 to increase the likelihood of matching. As can be seen, thetechniques for performing matching at block 805 may be similar to thosetechniques for abstraction used during the offline phase and describedwith respect to FIG. 4.

Extending the example of FIG. 5 to the online phase, suppose a useruploads Facebook data with “Like” information for each user. It is verylikely that the text field will be matched appropriately to the statuscaption of the Facebook data. The “Like” information is indeedcategorical, but only has two category labels (unless “Unlike” were anoption), so the matching process of block 805 may find it to be a closeenough match to the sentiment label field if no other categorical datais found or the number/kinds of categories are more dissimilar.

FIG. 9 is a sample user interface that may be displayed during theexecution of applications, as used in an embodiment. The user interfacemay be presented between blocks 803 and 804 of FIG. 8, for example. Thesample interface identifies several data sources 901, and for theselected data source presents several questions 902 that may be answeredby the analytics system. The domain and data category may also beidentified within block 903.

Example Computer System

FIG. 10 is a block diagram of an analytics system, as used in anembodiment. The system may perform any or all of the processes describedin this specification. In various embodiments, additional blocks may beincluded, some blocks may be removed, and/or blocks may be connected orarranged differently from what is shown.

User interface module 1001 may be used during the online phase tocapture domain and data categories and to present correspondingquestions to the user. It may also be used to deploy the algorithm torun on the user's datasets on the execution backend, and may be used toverify the mapping of the data to the canonical data, explore results,and other considerations.

Question store 1002 may store the questions defined, possiblycross-categorized by domain and data category and/or linked to theapplications on the execution backend.

Execution backend 1003 may hold application implementations andalgorithms used to analyze datasets, and it may manage theinfrastructure necessary to run those algorithms. It may be configuredto accept data and input that data to applications according to thecanonical data. The execution backend may further be used in performanceof processes such as application construction and question formulation.

Data matcher 1004 may be employed by the execution backend in itscomparison of runtime data with the canonical descriptions, as describedwith respect to block 805 of FIG. 8.

Data store 1005 may maintain user datasets uploaded by users.

Optional meta-learning engine 1006 may assist in populating theanalytics system with applications and corresponding questions. It mayuse historical information, observe system usage, analyze existing data,and receive expert supervision, to determine useful applications foralgorithms in terms of domains, data categories, and questions. Inalternate embodiments, operators of the analytics system may performsimilar tasks.

FIG. 11 illustrates a computer system 1100 that is consistent withembodiments of the present teachings. In general, embodiments of ananalytics system may be implemented in various computer systems, such asa personal computer, a server, a workstation, an embedded system, or acombination thereof, for example, computer system 1100. Certainembodiments may be embedded as a computer program. The computer programmay exist in a variety of forms both active and inactive. For example,the computer program can exist as software program(s) comprised ofprogram instructions in source code, object code, executable code orother formats; firmware program(s); or hardware description language(HDL) files. Any of the above can be embodied on a computer readablemedium, which include storage devices and signals, in compressed oruncompressed form. However, for purposes of explanation, system 1100 isshown as a general purpose computer that is well known to those skilledin the art. Examples of the components that may be included in system1100 will now be described.

As shown, system 1100 may include at least one processor 1102, akeyboard 1117, a pointing device 1118 (e.g., a mouse, a touchpad, andthe like), a display 1116, main memory 1110, an input/output controller1115, and a storage device 1114. Storage device 1114 can comprise, forexample, RAM, ROM, flash memory, EEPROM, CD-ROM or other optical diskstorage, magnetic disk storage or other magnetic storage devices, or anyother medium that can be used to carry or store desired program code inthe form of instructions or data structures and that can be accessed bya computer. A copy of the computer program embodiment of the printingsystem can be stored on, for example, storage device 1114. System 1100may also be provided with additional input/output devices, such as aprinter (not shown). The various components of system 1100 communicatethrough a system bus 1112 or similar architecture. In addition, system1100 may include an operating system (OS) 1120 that resides in memory1110 during operation. One skilled in the art will recognize that system1100 may include multiple processors 1102. For example, system 1100 mayinclude multiple copies of the same processor. Alternatively, system1100 may include a heterogeneous mix of various types of processors. Forexample, system 1100 may use one processor as a primary processor andother processors as co-processors. For another example, system 1100 mayinclude one or more multi-core processors and one or more single coreprocessors. Thus, system 1100 may include any number of execution coresacross a set of processors (e.g., processor 1102). As to keyboard 1117,pointing device 1118, and display 1116, these components may beimplemented using components that are well known to those skilled in theart. One skilled in the art will also recognize that other componentsand peripherals may be included in system 1100.

Main memory 1110 serves as a primary storage area of system 1100 andholds data that is actively used by applications, such as the printerdriver of the printing system, running on processor 1102. One skilled inthe art will recognize that applications are software programs that eachcontains a set of computer instructions for instructing system 1100 toperform a set of specific tasks during runtime, and that the term“applications” may be used interchangeably with application software,application programs, and/or programs in accordance with embodiments ofthe present teachings. Memory 1110 may be implemented as a random accessmemory or other forms of memory as described below, which are well knownto those skilled in the art.

OS 1120 is an integrated collection of routines and instructions thatare responsible for the direct control and management of hardware insystem 1100 and system operations. Additionally, OS 1120 provides afoundation upon which to run application software. For example, OS 1120may perform services, such as resource allocation, scheduling,input/output control, and memory management. OS 1120 may bepredominantly software, but may also contain partial or completehardware implementations and firmware. Well known examples of operatingsystems that are consistent with the principles of the present teachingsinclude MICROSOFT WINDOWS (e.g., WINDOWS CE, WINDOWS NT, WINDOWS 2000,WINDOWS XP, and WINDOWS VISTA), MAC OS, LINUX, UNIX, ORACLE SOLARIS,OPEN VMS, and IBM AIX.

The foregoing description is illustrative, and variations inconfiguration and implementation may occur to persons skilled in theart. For instance, the various illustrative logics, logical blocks,modules, and circuits described in connection with the embodimentsdisclosed herein may be implemented or performed with a general purposeprocessor (e.g., processor 1102), a digital signal processor (DSP), anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA) or other programmable logic device, discrete gate ortransistor logic, discrete hardware components, or any combinationthereof designed to perform the functions described herein. Ageneral-purpose processor may be a microprocessor, but, in thealternative, the processor may be any conventional processor,controller, microcontroller, or state machine. A processor may also beimplemented as a combination of computing devices, e.g., a combinationof a DSP and a microprocessor, a plurality of microprocessors, one ormore microprocessors in conjunction with a DSP core, or any other suchconfiguration.

In one or more exemplary embodiments, the functions described may beimplemented in hardware, software, firmware, or any combination thereof.For a software implementation, the techniques described herein can beimplemented with modules (e.g., procedures, functions, subprograms,programs, routines, subroutines, modules, software packages, classes,and so on) that perform the functions described herein. A module can becoupled to another module or a hardware circuit by passing and/orreceiving information, data, arguments, parameters, or memory contents.Information, arguments, parameters, data, or the like can be passed,forwarded, or transmitted using any suitable means including memorysharing, message passing, token passing, network transmission, and thelike. The software codes can be stored in memory units and executed byprocessors. The memory unit can be implemented within the processor orexternal to the processor, in which case it can be communicativelycoupled to the processor via various means as is known in the art.

If implemented in software, the functions may be stored on ortransmitted over a computer-readable medium as one or more instructionsor code. Computer-readable media includes both tangible computer storagemedia and communication media including any medium that facilitatestransfer of a computer program from one place to another. A storagemedia may be any available tangible media that can be accessed by acomputer. By way of example, and not limitation, such tangiblecomputer-readable media can comprise RAM, ROM, flash memory, EEPROM,CD-ROM or other optical disk storage, magnetic disk storage or othermagnetic storage devices, or any other medium that can be used to carryor store desired program code in the form of instructions or datastructures and that can be accessed by a computer. Disk and disc, asused herein, includes CD, laser disc, optical disc, DVD, floppy disk andBlu-ray disc where disks usually reproduce data magnetically, whilediscs reproduce data optically with lasers. Also, any connection isproperly termed a computer-readable medium. For example, if the softwareis transmitted from a website, server, or other remote source using acoaxial cable, fiber optic cable, twisted pair, digital subscriber line(DSL), or wireless technologies such as infrared, radio, and microwave,then the coaxial cable, fiber optic cable, twisted pair, DSL, orwireless technologies such as infrared, radio, and microwave areincluded in the definition of medium. Combinations of the above shouldalso be included within the scope of computer-readable media. Resourcesdescribed as singular or integrated can in one embodiment be plural ordistributed, and resources described as multiple or distributed can inembodiments be combined. The scope of the present teachings isaccordingly intended to be limited only by the following claims.

Other embodiments will be apparent to those skilled in the art fromconsideration of the specification and practice of the embodimentsdisclosed herein. It is intended that the specification and examples beconsidered as exemplary only.

What is claimed is:
 1. A method of performing data analytics, the methodbeing performed on a data analytics system comprising a non-transitorycomputer-readable storage medium and a processor attached thereto, themethod comprising: storing, in the computer-readable storage, one ormore applications, each application being associated with an algorithm,each application being further associated with canonical data indicativeof a class of data to be accepted by the algorithm associated with theapplication; storing, in the computer-readable storage, one or morequestions, each question being associated with an application; storing auser dataset associated with a domain and a data category; selecting aquestion from the one or more questions, the selected question beingselected based at least in part on the domain and the data category ofthe user dataset; matching the user dataset based on the canonical dataof the application associated with the selected question, the matchingbeing performed by the processor, the matching comprising comparing oneor more fields of the user dataset with the class of data indicated bythe canonical data, the matching thereby producing a canonicalizeddataset; executing the algorithm associated with the application,wherein the canonicalized dataset is provided as input to the algorithm;and presenting output from the algorithm to the user.
 2. The method ofclaim 1, wherein each question further comprises a domain and a usercategory, and wherein selecting the question from the one or morequestions comprises identifying a subset of matching questions havingthe same domain and user category as the domain and the user category ofthe user dataset.
 3. The method of claim 2, wherein the one or morequestions include a basic question, and wherein selecting the questionfrom the one or more questions further comprises selecting the basicquestion upon a determination that no question matches the domain anduser category of the user dataset.
 4. The method of claim 3, wherein thebasic question includes a question text containing an interpolationflag, and wherein selecting the basic question comprises interpolatinguser-provided text with the question text of the basic question toproduce interpolated question text, and presenting the interpolatedquestion text to a user.
 5. The method of claim 1, wherein the canonicaldata identifies one or more data field descriptors, and wherein matchingthe user dataset based on the canonical data comprises selecting fieldsfrom the user dataset based at least in part on the one or more datafield descriptors of the canonical data.
 6. The method of claim 1,wherein each application further comprises data indicative of a mappingto the algorithm of the application, and wherein executing the algorithmassociated with the application comprises mapping the canonicalized datato the input to the algorithm based on the data indicative of themapping.
 7. The method of claim 1, wherein the user dataset is receivedfrom an external computer system via a network interface of theanalytics system.
 8. The method of claim 7, further comprising:identifying a subset of matching questions from the one or morequestions based at least in part on the domain and data category of theuser dataset; transmitting, to the external computer system, a userinterface identifying the subset of matching questions; and receiving auser form response from the external computer system via the transmitteduser interface, wherein selecting the question from the one or morequestions is based at least in part on the user form response.
 9. Themethod of claim 1, wherein the canonical data for each application isdetermined based on an abstraction operation performed by the analyticssystem, the abstraction operation comprising: identifying an exampledataset associated with the application; and determining one or morefield descriptors based on the example dataset.
 10. The method of claim9, wherein determining the one or more field descriptors is based atleast in part on a selection of fields by an operator of the analyticssystem.
 11. The method of claim 9, wherein each field descriptoridentifies a data type and one or more characteristics of a data field.12. The method of claim 9, wherein the one or more field descriptors aredetermined based at least in part on inputs associated with thealgorithm of the application.
 13. The method of claim 9, wherein theexample dataset is uploaded to the analytics system by an operator ofthe analytics system.
 14. The method of claim 1, wherein matching theuser dataset based on the canonical data comprises identifying anambiguity in matching at least one descriptor of the canonical data, andrequesting manual interaction to resolve the ambiguity.
 15. The methodof claim 14, wherein the ambiguity involves a descriptor of thecanonical data not matching any field of the user dataset or matchingmultiple fields of the user dataset.
 16. A computer system, comprising:an application store comprising computer-readable storage, having storedtherein one or more applications, each application being associated withan algorithm, each application being further associated with canonicaldata indicative of a class of data to be accepted by the algorithmassociated with the application; a question store comprisingcomputer-readable storage, having stored therein one or more questions,each question being associated with an application; a user dataset storecomprising computer-readable storage, having stored therein a userdataset associated with a domain and a data category; a questionselection module configured to select a question from the one or morequestions, the selected question being selected based at least in parton the domain and the data category of the user dataset; a datasetmatching module configured to match the user dataset based on thecanonical data of the application associated with the selected question,the matching being performed by the processor, the matching comprisingcomparing one or more fields of the user dataset with the class of dataindicated by the canonical data, the matching thereby producing acanonicalized dataset; and an application execution module configured toexecute the algorithm associated with the application, wherein thecanonicalized dataset is provided as input to the algorithm.
 17. Amethod of performing data analytics, the method being performed using acomputer processor, the method comprising: receiving a user dataset;selecting a question that may be answered with respect to the userdataset from a plurality of questions, the selection being based onstored attributes of the plurality of questions and further being basedon attributes of the user dataset; reconfiguring the user dataset toconform with one or more inputs associated with an algorithm, thealgorithm being identified by the computer processor as being configuredto respond to the selected question; and executing the algorithm basedon the reconfigured user dataset.